package br.com.autoleal.veiculo.service;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.autoleal.veiculo.entity.Veiculo;

@Stateless
public class VeiculoServiceBean {

	@PersistenceContext
	private EntityManager em;

	public void adicionarVeiculo(Veiculo veiculo) {
		veiculo.setChassi(veiculo.getChassi().toUpperCase());
		veiculo.setPlaca(veiculo.getPlaca().toUpperCase());
		em.persist(veiculo);
	}

	public void alterarVeiculo(Veiculo veiculo) {
		em.merge(veiculo);
	}

	public void excluirVeiculo(Veiculo veiculo) {
		veiculo = em.find(Veiculo.class, veiculo.getId());
		em.remove(veiculo);
	}
	
	 public Veiculo buscarPlaca(String placa) {
         Query query = em.createNamedQuery("Veiculo.buscarPlaca");
         query.setParameter("placa", placa.toUpperCase());
         try {
                 return (Veiculo) query.getSingleResult();
         } catch (Exception e) {
                 return null;
         }
 }

	@SuppressWarnings("unchecked")
	public List<Veiculo> buscarTodosVeiculo() {
		Query query = em.createNamedQuery("Veiculo.buscarTodosVeiculo");
		try {
			return query.getResultList();
		} catch (NoResultException e) {
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	public List<Veiculo> buscarModeloPlacaChassiMarcaAno(String consulta) {
		Query query = em.createNamedQuery("Veiculo.buscarModeloPlacaChassiMarcaAno");
		query.setParameter("modelo", "%" + consulta.toUpperCase() + "%");
		query.setParameter("placa", "%" + consulta.toUpperCase() + "%");
		query.setParameter("chassi", "%" + consulta + "%");
		query.setParameter("marca", "%" + consulta.toUpperCase() + "%");
		query.setParameter("ano", "%" + consulta + "%");
		try {
			return query.getResultList();
		} catch (NoResultException e) {
			return null;
		}
	}
	
}